半夜睡不著來更新XD
物件(Object)
物件也就是類別的實例,也就是說有了類別這張藍圖我們可以在程式中產生許多手機類別的資料,而這些資料彼此之間不互相影響,每一個皆是獨立的。
類別(Class)與物件(Object)其實是個一體兩面的東西,簡單解釋:
類別算是一個藍圖、一個可參考的文件,他沒有實體的概念,是靜態的。
物件是具有實體概念,狀態會隨時改變,是動態的,但架構不會改變。
舉例來說:手機
類別(class):設計藍圖
物件(object):實際設計好的手機
兩者關係:設計藍圖(類別)決定手機要怎麼製作,決定要用多少規格的CPU、多少畫素的相機、手機外觀要長怎樣。實際製作出來的手機(物件)是照著設計藍圖所生產出來的,使用者也只能照著設計圖所訂定的規格使用手機。
接下來我們來一一拆解這程式碼吧!
[In]
#食物種類
class Food():
#建構式(Constructor)
def __init__(self,taste,flavor): #__init__(self)=initialization
self.taste = taste #屬性 #self代表了目前的物件(object)
self.flavor=flavor #屬性
#方法(medhod)
def eater(self):
print(f"This steak is {self.taste} and have {self.flavor} .") #字串格式化
#透過self.taste及self.flavor的方式來存取目前物件(steak)的屬性值(taste,flavor)
steak = Food("juicy","good")
steak.eater()
'''
在python裡面,所有的資料類型都是' 物件 ',然而,python也允許工程師自己創類型,而自創的類型,我們稱為 ( 類別[Class] )
'''
[Out]
This steak is juicy and have good .
用於定義未來產生物件(Object)時所擁有的屬性(Attribute)及方法(Method)
class Food():
透過類別(Class)實際建立之實體,可用isinstance()來判斷類別(Class)與物件(Object)的關係。會return 布林值
steak = Food()
[In]
class steak:
pass #定義一個函數,空著不寫會產生語法錯誤,故使用 pass。
class soda:
pass #定義一個函數,空著不寫會產生語法錯誤,故使用 pass。
food=steak()
print(isinstance(food,steak))
print(isinstance(food,soda))
[Out]
True
False
要先有物件(Object)才能定義屬性(Attribute)
food=steak()
steak = Food("juicy","good")
steak.eater()
這個self就是告訴類別(Class)目前是在設定哪一個物件的屬性(Attribute)。
#建構式(Constructor)
def __init__(self,taste,flavor): #__init__(self)=initialization
self.taste = taste #屬性 #self代表了目前的物件(object)
self.flavor=flavor #屬性
方法(Method)和建構式(Constructor)一樣至少要有一個self參數。
def eater(self):
print(f"This steak is {self.taste} and have {self.flavor} .") #字串格式化
這篇就是從網路上引用class的用法。對class之用法著實有所闕如,願下次在運用class以及物件時能有更深一步之認識和更加熟稔。
https://ppt.cc/fNYzgx
https://ppt.cc/fmsoQx
https://ppt.cc/fHlUex